개발자가 되기 전 알았더라면 좋았을 3가지

Adobe in San Francisco 프론트엔드 엔지니어로 리모트로 일하는 김민서, Alex Kim님 세션 정리

비전공자, 2015년에 코딩을 시작했고, Hack Reactor에서 공부했다.

2015년의 내게 말해주고 싶은 것들

1. 목표 덜 세우고 시스템 구축하기 (Goals < Systems)

개인적인 경험. 목표 위주가 오히려 정신 건강에 안 좋았다. 일반적으로 스마트하다고 여겨지는 목표 세우기 : 구체적이고, 측정가능하고, 실행가능하고, 시간기한이 있는 목표… 과연 얼마나 효과적일까?

목표를 세우는 것보다는 시스템을 구축하는 것이 더 도움이 된다.

성공적인 개발자로 취업하는 것(목표) vs 내가 코드를 짤 때 고려하는 것들, 새로운 JS 프레임워크를 배우는 방법, 블로그에 배웠던 걸 기록하는 것, 팀원들에게 코드 리뷰 받는 것, etc

  • Smaller Example : 매일 Algorithm 하나 풀기, 관련 자료구조 처음부터 구현하기, 공간 복잡도 그려보기

문제를 푸는 것은 목표일뿐, 어떻게 푸느냐가 시스템이다. 목표를 무시하고 과정에만 시간을 쏟으면 어떨까? 목표를 아예 무시하더라도, 시스템 자체가 탄탄하고, 체계적이라면 괜찮다.

목표지향적인 접근의 문제점들

  1. 목표 자체가 결과의 차이를 만들어내지는 않는다

    • 태릉 선수촌 선수들의 목표는 동일함(올림픽 메달)
  2. 목표 이루는 것 === 일시적인 변화

    • 개발자 취업에 성공해도, 공부 학습 시스템이 구축되지 않았다면 원하는 퍼포먼스를 내지 못한다.
    • 즉, 목표를 이루는 것 자체로는 지속적인 변화를 가져오지 못한다.
  3. 목표가 가져오는 불안감과 걱정

    • Deferred Happiness Promise : 미래의 나만이 누릴 수 있는 행복, 목표를 이루면 행복해지겠지, 괜찮아지겠지…

    • 목표를 못 이름 === 불행

계획 및 방향성을 위해 목표를 활용하는 것은 좋지만, 과정 자체를 이뤄내기 위해서는 시스템에 대한 투자가 더 필요

세션 듣다가 든 생각 : 갑자기 로또에 당첨되서 부자가 되었다고 한들, 그 부를 지킬 수 있을까? 삶을 어떻게 살지에 대한 철학이 없다면 갑자기 얻은 부가 그 사람에게 어떤 긍정적인 영향을 미칠 수 있을까? 지속적인 변화를 이루려면 시스템이 필요한 것이 아닌가? 아예 목표를 무시하라는 Alex kim님의 흥미로운 제안. 목표만이 위주인 삶이라면 그 목표가 좌절되었을 때의 삶은? 과정 자체가 즐거울 수는 없을까?

2. 행동 변화의 3가지 레이어 이해

스크린샷 2019-01-16 오후 3.24.49

  • 결과(Outcome) : 목표 / 어떤 결과물을 얻는가
  • 과정(Processes) : 습관 / 시스템
  • 자아(Identity) : 내가 보는 나의 모습, 신념

나도 시작할 땐 나를 개발자로 여기지 않았었다. 대부분의 사람들은 결과부터 시작한다. 추천하는 방법 : 자아부터 시작하면 어떨까? 바깥부터 시작하기보다 안에서부터 시작하면 어떨까? 이미 난 유능한 개발자라고 생각하면 어떨까? (리버스 엔지니어링으로 접근해보기)

벨로퍼트님의 스스로 짱짱 개발자라고 생각하기와 맞닿아있는 느낌

  • 아이덴티티 베이스드 어프로치Identity based Apporach

    지속적인 변화를 위한 알고리즘

    1. 어떤 개발자가 될지 결정하자.

    2. 전공자보다 뛰어난 비전공자 출신 개발자

    3. Technical : HTML/CSS/Javascript 기본기, React 설계 & 컴포넌트 디자인, 탄탄한 컴퓨터공학 기본기

    4. Non-Technical : 커뮤니케이션 능력, 새로운 업무를 배우고자 하는 의지 & 능력, 같이 일하고 싶은 개발자

    5. 소소한 습관들로 스스로에게 증명하자.

    6. 깔끔한 Arrow Fuction을 한 블록 씀 -> 나는 유능한 웹 개발자다

    7. 막힌 팀원을 페어 프로그래밍으로 도와줌 -> 나는 같이 일하고 싶은 개발자다. (나의 아이덴티티에 증명 됨)

    8. 큰 이벤트 대신 매일 할 수 있는 소소한 것들을 해나가기

새로운 Identity는 새로운 증거가 필요함 -> 증거 : 나의 Micro-habit

작은 벽돌 쌓기 같은 느낌? 큰 이벤트보다 소소한 습관들에 투자하면 어떨까? 내가 어떤 모습이 되고 나서 그렇게 행동하는게 아니라 이미 그런 사람이라고 생각하고 행동하면 어떨까?

  • Identity based Apporach의 장점

내가 되고 싶은 개발자의 모습을 역으로 생각하면서 맞춰나가니까 좀 더 당연한 습관으로 받아들이게 됐다.

  • 내 자아와 일관된 행동을 하는게 더 쉬워져서 의지력에 덜 의존하게 됨.

  • Small Win(작은 성공들)을 이루기 쉽다. 과정 자체가 더 재밌어진다.

    나는 이런 사람이니 이렇게 행동해야 해.

    큰 성공에 집착하면 하루하루가 너무 힘들다. 난 일상 자체가 즐겁고 재밌어지길 원한다.

  • 소소한 습관 기반 -> 자연스럽게 시스템에 더 투자

  • Re-programming yourself through stories

    • 본인에게 하는 혼잣말 & 셀프 스토리

    예전에는 “나는 비전공자 출신어어서 수학적 사고가 떨어져.” 이런 식으로 계속 말해왔었는데, 실제로는 무수한 노력을 했음에도 불구하고 자신에게 반복적인 말을 들려줘서 스스로 그런 모습을 만들게 됨.

    • 다시 스스로의 모습을 재점검하고, 내가 결정한 개발자의 모습 : 비전공자 출신이지만 전혀 기본기에 약점이 없음, 오히려 비전공 출신인게 강점
    • 알고리즘 & 컴퓨터 공학에 약한 개발자가 아님
    • 알고리즘과 컴퓨터 공학을 배우는 시스템에 다시 투자

3. 소프트 스킬에 투자하기

인터뷰는 해답을 찾는 문제 풀이가 아니다.

  • 스토리텔링

    • 인터뷰는 문제 풀이가 아니다! 인터뷰는 스토리 텔링

    우리가 쓰는 건 코드지만, 우리가 같이 일하는 건 사람이다. 사람을 움직이는 것이 베이스다. 사람을 움직이는 스토리 텔링이 필요하다.

    • “어떻게 개발자로 전향하게 되셨어요?”
    • 어떻게 개발자로 전향하게 되었는지 궁금하게 만들기, 이런 스토리 텔링을 잘하는 사람은 흔하지 않다.
    • 이 부분이 굉장히 중요하다.
  • 세일즈 (영업)

    • 모든 개발자는 영업직원
    • 유능한 개발능력을 드러내는 것도 능력 -> 취업/이직 및 커리어 관리에 중요
    • 팀원들과의 협업 & 커뮤니케이션 능력 -> 업무에 중요
    • 협상능력 => 연봉/업무에 중요
    • 모든 것은 협상의 개념으로 생각해볼 수 있음
  • Blog : https://minseoalex.kim

  • https://github.com/minseokim

새로운 기술이 hot하다고 뜨면 드는 생각 : 또 튜토리얼 하면서 배워야 해? 이 짓 거리 언제까지 해야 해? -> 다 알 수 없다. 꼭 알아야 하는 것만 잘 알아야 한다. 자신의 장점, 강점이 뭔지 알면 충분하다.

막상 혼자 일하니까 게을러진다. 집에서 일할 때가 많다. 게을러지기 쉽다. 자유로움을 얻는 대신 외로움을 얻는다.

(리모트 일하다보니) 오버 커뮤니케이션을 한다. 상대방이 어떻게 하면 충분히 이해할 수 있을지 생각.


lastrites2018
Written bylastrites2018
I explain with words and code.

👉삽질의 역사는 노션 WIKI에서